-- cring vsb thing: -- local owner = owner ---------------------- -- Services local TweenS = game:service("TweenService") ------------- -- UTILS -- local Utils = {} function Utils:Create(InstData, Props) local Obj = Instance.new(InstData[1], InstData[2]) for k, v in pairs (Props) do Obj[k] = v end; return Obj end function Utils:CNR(cf) -- CFrameNoRotate return CFrame.new(cf.x,cf.y,cf.z) end -- LEGACY FUNCTIONS WITH ADDED FEATURES function Utils:ezweld(p, a, b, cf, c1) local weld = Instance.new("Weld",p) weld.Part0 = a weld.Part1 = b weld.C0 = cf if c1 then weld.C1 = c1 end return weld end function Utils:NewSound(p, id, pit, vol, loop, autoplay) local Sound = Instance.new("Sound",p) Sound.Pitch = pit Sound.Volume = vol Sound.SoundId = "rbxassetid://" ..id Sound.Looped = loop if autoplay then Sound:Play() end return Sound end ----------- -- make guy local guy = game:service("Players"):CreateHumanoidModelFromDescription(Utils:Create({"HumanoidDescription"}, { HeadColor = BrickColor.new("Cool yellow").Color, TorsoColor = BrickColor.new("Royal purple").Color, HatAccessory = "34901393", }), Enum.HumanoidRigType.R6) --local guy = game:service("Players"):CreateHumanoidModelFromUserId(game.Players.ew_001.UserId, Enum.HumanoidRigType.R6) local hum = guy.Humanoid local hed = guy.Head local fac = hed.face local root = guy.HumanoidRootPart local waiting = "rbxassetid://8560915" local happy = fac.Texture hum.AutoRotate = false hum.DisplayName = "timmyj12310" guy.Parent = script for i,v in pairs (guy:children()) do if v:IsA("BasePart") then v:SetNetworkOwner(nil) end end -- tool local signed = false local done = false local tool = Utils:Create({"Tool"}, { Grip = CFrame.new(0, -.075, 0) * CFrame.Angles(math.pi / 2, 0, 0) }); local hand = Utils:Create({"Part", tool}, { CanCollide = false, Name = "Handle", Size = Vector3.new(50-5, 2, 38.028-5) * .05 }); Utils:Create({"SpecialMesh", hand}, { MeshId = "rbxassetid://5846136745", TextureId = "rbxassetid://5846136808", Scale = Vector3.new(1, 2, 1) * .05, }); local paper = Utils:Create({"Part", tool}, { Size = Vector3.new(50-5, 1, 38.028-5) * .05, Color = Color3.new(1, 1, 1), Material = "Sand", CanCollide = false, }); Utils:ezweld(paper, paper, hand, CFrame.new(0, .05, 0) * CFrame.Angles(0, -math.pi / 2, 0)) local target = owner.Character.HumanoidRootPart -- set target local function findPlayer(players) if #players == 0 then done = true hum:UnequipTools() return end local plr = players[math.random(1, #players)] if plr and plr.Character then local r = plr.Character:FindFirstChild("HumanoidRootPart") if r then target = r; signed = false else plr = findPlayer(players) end else plr = findPlayer(players) end end local pfindserv = game:GetService("PathfindingService") local reachedConnection local function pathfind(where) if reachedConnection then reachedConnection:disconnect() end local path = pfindserv:CreatePath({AgentRadius = 3, AgentHeight = 5, WaypointSpacing = math.huge, Costs = {Water = 20}, AgentCanJump = true}) local success, errorMessage = pcall(function() path:ComputeAsync(root.Position, where) end) if success and path.Status == Enum.PathStatus.Success then local waypoints = path:GetWaypoints() local blockedConnection local nextWaypointIndex = 0 blockedConnection = path.Blocked:Connect(function(blockedWaypointIndex) if blockedWaypointIndex >= nextWaypointIndex then blockedConnection:Disconnect() pathfind(where) end end) if not reachedConnection then reachedConnection = hum.MoveToFinished:Connect(function(reached) if reached and nextWaypointIndex < #waypoints then -- Increase waypoint index and move to next waypoint nextWaypointIndex += 1 hum:MoveTo(waypoints[nextWaypointIndex].Position) else reachedConnection:Disconnect() blockedConnection:Disconnect() end end) end nextWaypointIndex = 2 hum:MoveTo(waypoints[nextWaypointIndex].Position) end end local function pathfind(w) -- replace hum:MoveTo(w) end local signs = {} local surf = Utils:Create({"SurfaceGui", paper}, { CanvasSize = Vector2.new(900, 1600), Face = "Top", }); local write = Utils:Create({"TextBox", surf}, { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, TextScaled = true, Text = [[PETITION -------------------------- OZZAK MAKE NAHID CHARA 2 SIGNED BY:]], Font = "Antique", }); local clicker = Instance.new("ClickDetector", hand).MouseClick:connect(function(who) --if table.find(signs, who.Name) then return end write.Text ..=[[ ]] ..who.Name signed = true table.insert(signs, who.Name) fac.Texture = happy task.wait(2) local players = game:service("Players"):GetPlayers() for i,v in pairs (players) do if table.find(signs, v.Name) then table.remove(players, i) end end local plr = findPlayer(players) --hum:MoveTo(Vector3.new(math.random(-1, 1) * 1000, math.random(-1, 1) * 1000, math.random(-1, 1) * 1000)) end) -- anims --NS(game:service("HttpService"):GetAsync("https://paste.ee/r/jqa9e"), guy) -- r6 anim --[[ local animscript = NS(game:service("HttpService"):GetAsync("https://paste.ee/r/3WEdb"), guy) -- r15 anim local anims = { climb = {id = "rbxassetid://387946868"}, fall = {id = "rbxassetid://387948187"}, idle = {ids = { Animation1 = {id = "rbxassetid://387947158", weight = 9}, Animation2 = {id = "rbxassetid://387947464", weight = 1}, Animation3 = {id = "rbxassetid://387947796", weight = 1} }}, jump = {id = "rbxassetid://387946624"}, run = {id = "rbxassetid://387947975"}, sit = {id = "rbxassetid://178130996"}, toolnone = {id = "rbxassetid://387947975"}, walk = {id = "rbxassetid://382460631"}, }; for k,v in pairs (anims) do --print(">", k) local str = Utils:Create({"StringValue", animscript}, { Name = k, }); if v.id then Utils:Create({"Animation", str}, { Name = (k == "toolnone" and "ToolNoneAnim") or k:sub(1, 1):upper() ..k:sub(2) .."Anim", AnimationId = v.id, }) else for k2,v2 in pairs (v.ids) do --print(" >", k2) local a = Utils:Create({"Animation", str}, { Name = k2, AnimationId = v2.id, }); if v2.weight then --print(" >", "Weight") Utils:Create({"NumberValue", a}, {Name = "Weight", Value = v2.weight}) end end end end ]] local animscript = NS(game:service("HttpService"):GetAsync("https://paste.ee/r/3WEdb"), guy) -- r6 anim local anims if hum.RigType == Enum.HumanoidRigType.R6 then anims = { climb = {id = "rbxassetid://180436334"}, fall = {id = "rbxassetid://180436148"}, idle = {ids = { Animation1 = {id = "rbxassetid://180435571", weight = 9}, Animation2 = {id = "rbxassetid://180435792", weight = 1}, }}, jump = {id = "rbxassetid://125750702"}, run = {id = "rbxassetid://180426354"}, sit = {id = "rbxassetid://178130996"}, toolnone = {id = "rbxassetid://182393478"}, walk = {id = "rbxassetid://180426354"}, }; else anims = { climb = {id = "rbxassetid://387946868"}, fall = {id = "rbxassetid://387948187"}, idle = {ids = { Animation1 = {id = "rbxassetid://387947158", weight = 9}, Animation2 = {id = "rbxassetid://387947464", weight = 1}, Animation3 = {id = "rbxassetid://387947796", weight = 1} }}, jump = {id = "rbxassetid://387946624"}, run = {id = "rbxassetid://387947975"}, sit = {id = "rbxassetid://178130996"}, toolnone = {id = "rbxassetid://387947975"}, walk = {id = "rbxassetid://382460631"}, } end; for k,v in pairs (anims) do --print(">", k) local str = Utils:Create({"StringValue", animscript}, { Name = k, }); if v.id then Utils:Create({"Animation", str}, { Name = (k == "toolnone" and "ToolNoneAnim") or k:sub(1, 1):upper() ..k:sub(2) .."Anim", AnimationId = v.id, }) else for k2,v2 in pairs (v.ids) do --print(" >", k2) local a = Utils:Create({"Animation", str}, { Name = k2, AnimationId = v2.id, }); if v2.weight then --print(" >", "Weight") Utils:Create({"NumberValue", a}, {Name = "Weight", Value = v2.weight}) end end end end -- setup turning --[[ local gyro = Utils:Create({"BodyGyro", root}, { MaxTorque = Vector3.new(0, math.huge, 0), D = 10, P = 2000, }) ]] local gyro = Utils:Create({"AlignOrientation", root}, { Attachment0 = Instance.new("Attachment", root), Mode = "OneAttachment", --MaxTorque = math.huge, MaxAngularVelocity = 1000, RigidityEnabled = true, PrimaryAxisOnly = true, }) -- debug local hed = guy.Head local announce = Utils:Create({"BillboardGui"}, { Size = UDim2.new(7, 0, 1.5, 0), StudsOffset = Vector3.new(0, 3, 0), }); local text = Utils:Create({"TextBox", announce}, { Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, TextStrokeTransparency = 0, TextColor3 = Color3.new(1, 1, 1), TextScaled = true, }); -- init props --local target = workspace.coolboyalex6434.HumanoidRootPart root.CFrame = owner.Character.Head.CFrame local DOT = 0 local MAG = 0 local LOOK = false -- update funcs local woa = false local danced = false local function IsLook() if woa or signed then return end if MAG > 4 then if danced and math.random(1, 255) ~= 1 then pathfind(target.CFrame.p + (target.CFrame.lookVector * 4.5) + (target.CFrame.rightVector * 1.5)) if target.CFrame.y > (root.CFrame.y + .5) then hum.Jump = true end if math.random(1, 125) == 1 then hum:EquipTool(tool); hand:SetNetworkOwner(nil); paper:SetNetworkOwner(nil) end --hum.MoveToFinished:Wait() else woa = true task.wait(.2) local POS = root.CFrame --[[ hum:MoveTo(POS - root.CFrame.lookVector * 1.25) task.wait(.075) hum:MoveTo(POS + root.CFrame.rightVector * 1.25) task.wait(.075) hum:MoveTo(POS + root.CFrame.lookVector * 1.25) task.wait(.075) hum:MoveTo(POS - root.CFrame.rightVector * 1.25) task.wait(.075) ]] hum:EquipTool(tool) hand:SetNetworkOwner(nil); paper:SetNetworkOwner(nil) for a = 1,1 do for i = 0,4 do hum:MoveTo(POS.p + (POS.lookVector * math.sin(i * 90) * 2) + (POS.rightVector * math.cos(i * 90) * 2)) task.wait(.1) end end; hum:MoveTo(POS.p) task.wait(.1) woa = false danced = true end end gyro.CFrame = CFrame.new(root.CFrame.p, Vector3.new(target.CFrame.x, root.CFrame.y, target.CFrame.z)) end; local function NotLook() fac.Texture = waiting gyro.CFrame = CFrame.new(root.CFrame.p, Vector3.new(target.CFrame.x, root.CFrame.y, target.CFrame.z)) --[[ gyro.CFrame = CFrame.new(root.CFrame.p, target.CFrame.p) if woa then return end hum:MoveTo(target.CFrame.p) if MAG < 2 then hum:MoveTo(target.CFrame.p - (target.CFrame.lookVector * 3.5)) woa = true --hum.MoveToFinished:Wait() task.wait((math.random() / 30)) woa = false end ]] if woa or signed then return end danced = false if MAG > 4 then pathfind(target.CFrame.p + (target.CFrame.lookVector * 4.5) - (target.CFrame.rightVector * 3.5)) if target.CFrame.y > (root.CFrame.y + 2) then hum.Jump = true end hum.MoveToFinished:Wait() if math.random(1, 100) == 1 then hum:UnequipTools() end else if math.random(1, 100) == 1 then hum:EquipTool(tool); hand:SetNetworkOwner(nil); paper:SetNetworkOwner(nil) end end end local donejump = false local busy = false local looking = false local function WalkAround() if looking then gyro.CFrame = CFrame.new(root.CFrame.p, target.CFrame.p) end if busy then return end if donejump then if math.random(1, 100) == 1 then if math.random(1, 12) == 1 then findPlayer(game:service("Players"):GetPlayers()) if not target then return end hum:MoveTo(target.CFrame.p + Vector3.new(math.random(-10, 10), 0, math.random(-10, 10))) gyro.Parent = root; hum.AutoRotate = false looking = true gyro.CFrame = CFrame.new(root.CFrame.p, target.CFrame.p) hum.MoveToFinished:wait() looking = false else gyro.Parent = nil; hum.AutoRotate = true hum:MoveTo(root.CFrame.p + Vector3.new(math.random(-10, 10), 0, math.random(-10, 10))) end if math.random(1, 11) == 1 then task.wait(math.random()) hum.Jump = true end end else busy = true hum.Jump = true task.wait(.75) hum.Jump = true busy = false donejump = true end end -- update game:service("RunService").Stepped:connect(function() -- update props DOT = CFrame.new(hed.CFrame.p, target.CFrame.p).lookVector:Dot(target.CFrame.lookVector) MAG = (hed.CFrame.p - target.CFrame.p).magnitude LOOK = false if not target:IsDescendantOf(workspace) then local players = game:service("Players"):GetPlayers() for i,v in pairs (players) do if table.find(signs, v.Name) then table.remove(players, i) end end findPlayer(players) end if not signed and not done then if DOT < -.6 and MAG < 16 then LOOK = true IsLook() else NotLook() end end if done then WalkAround() end -- debug text.Text = "Dot: " ..tostring(DOT) ..[[ Looking: ]] ..tostring(LOOK) end)